#coding:utf-8
import unittest
from main import app
import json

class TestLogin(unittest.TestCase):
    """定义用户登陆账户密码测试案例"""
    """主要实现向后端发送post请求,后端会返回一个响应对象"""

    def setUp(self):
        """在执行具体的测试方法前,先被调用"""
        #需要先创建请求客户端,
        # 可以使用python的http标准客户端进行测试
        # urllib urllib2 requests

        #使用flask提供的测试客户端进行测试
        self.client = app.test_client()



    def test_empty_name_password(self):
        """测试模拟场景,用户名或密码不完整"""
        #使用客户端向后端发送post请求,data指明发送的数据,会返回一个响应信息
        response = self.client.post("/login", data={})

        resp_json = response.data
        #解析json数据
        resp_dict = json.loads(resp_json)

        #使用断言进行验证,验证是否有回复一个code字段
        self.assertIn('code', resp_dict)

        # 如果有该字段,那么验证是否为1
        code = resp_dict.get('code')
        self.assertEqual(code, 1)

        #测试只传name或password
        response = self.client.post('/login', data={'name':'admin'})
        resp_json = response.data
        resp_dict = json.loads(resp_json)
        self.assertIn('code',resp_dict)
        code = resp_dict.get('code')
        self.assertEqual(code, 1)


    def test_wrong_name_password(self):
        """测试用户名或密码错误"""
        response = self.client.post('/login', data={'name': 'admin','password':'python'})
        resp_json = response.data
        resp_dict = json.loads(resp_json)
        self.assertIn('code', resp_dict)
        code = resp_dict.get('code')
        self.assertEqual(code, 2)

if __name__ == '__main__':
    unittest.main()




